Appearance
JD6 求int型正整数在内存中存储时1的个数
本节目标:理解“JD6 求int型正整数在内存中存储时1的个数”的核心思路,并能把它用于实际开发或面试表达。 描述 输入一个 int 型的正整数,计算出该 int 型数据在内存中存储时 1 的个数。 数据范围:保证在 32 位整型数字范围内 输入描述: 输入一个整数(int类型) 输出描述: 这个数转换成2进制后,输出1的个数 示例1 输入: 5 ==复制== 输出: 2 ==复制== 示例2 输入: 0 ==复制== 输出: 0
def count_bits(n): count = 0 while n > 0: count += n & 1 n >>= 1 return count
读取输入的整数
n = int(input())
计算并输出1的个数
print(count_bits(n))
计算一个整数在内存中存储时1的个数,可以通过不断地将这个数与1进行与运算(&操作),然后右移这个数来实现。每次&操作如果结果为1,就说明当前的最低位是1,随后将这个数右移一位,直到这个数变成0。
这段代码定义了count_bits函数,它接受一个整数n,然后不断地检查n的最低位是否为1(通过n & 1实现),如果是,计数器count加1。然后通过n \>\>= 1(即n = n \>\> 1)将n右移一位,直到n变为0。最后,函数返回1的总数。
例如,对于输入5,其二进制表示为101,包含2个1,因此输出为2。对于输入0,二进制表示为0,不包含1,因此输出为0。
